<?php
/**
 * 静态方式获取常用服务
 * User: aiChenK
 * Date: 2019-01-03
 * Time: 15:30
 */
namespace Helpers;

use Phalcon\Di as PhalconDi;
use Phalcon\Di\Injectable;

class Di
{

    private static $diInjectable;

    public static function get(string $serviceName = '')
    {
        if (!self::$diInjectable instanceof DiInjectable) {
            self::$diInjectable = new DiInjectable();
        }
        return $serviceName
            ? self::$diInjectable->$serviceName
            : self::$diInjectable;
    }

//    private static function getDi()
//    {
//        return PhalconDi::getDefault();
//    }

//    /**
//     * @return \Phalcon\Db\AdapterInterface
//     */
//    public static function db()
//    {
//        return self::getDi()->get('db');
//    }
//
//    /**
//     * @return \Phalcon\Mvc\Model\Manager|\Phalcon\Mvc\Model\ManagerInterface
//     */
//    public static function modelsManager()
//    {
//        return self::getDi()->get('modelsManager');
//    }
//
//    /**
//     * @return \Phalcon\Mvc\Dispatcher|\Phalcon\Mvc\DispatcherInterface
//     */
//    public static function dispatcher()
//    {
//        return self::getDi()->get('dispatcher');
//    }
//
//    /**
//     * @return \Phalcon\Http\Request|\Phalcon\Http\RequestInterface
//     */
//    public static function request()
//    {
//        return self::getDi()->get('request');
//    }
//
//    /**
//     * @return \Phalcon\Http\Response|\Phalcon\Http\ResponseInterface
//     */
//    public static function response()
//    {
//        return self::getDi()->get('response');
//    }
//
//    /**
//     * @return \Phalcon\Filter|\Phalcon\FilterInterface
//     */
//    public static function filter()
//    {
//        return self::getDi()->get('filter');
//    }
//
//    /**
//     * @return \Phalcon\Crypt|\Phalcon\CryptInterface
//     */
//    public static function crypt()
//    {
//        return self::getDi()->get('crypt');
//    }
}


class DiInjectable extends Injectable
{
//    public function __get($propertyName)
//    {
//        return PhalconDi::getDefault()->get($propertyName);
//    }
}
